home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / ietf / urn / urn-archives / urn-ietf.archive.9703 / 000100_owner-urn-ietf _Mon Mar 31 02:36:37 1997.msg < prev    next >
Internet Message Format  |  1997-04-01  |  17KB

  1. Received: (from daemon@localhost)
  2.     by services.bunyip.com (8.8.5/8.8.5) id CAA12892
  3.     for urn-ietf-out; Mon, 31 Mar 1997 02:36:37 -0500 (EST)
  4. Received: from mocha.bunyip.com (mocha.Bunyip.Com [192.197.208.1])
  5.     by services.bunyip.com (8.8.5/8.8.5) with SMTP id CAA12887
  6.     for <urn-ietf@services.bunyip.com>; Mon, 31 Mar 1997 02:36:32 -0500 (EST)
  7. Received: from sdgmail.ncsa.uiuc.edu by mocha.bunyip.com with SMTP (5.65a/IDA-1.4.2b/CC-Guru-2b)
  8.         id AA28575  (mail destined for urn-ietf@services.bunyip.com); Mon, 31 Mar 97 02:36:28 -0500
  9. Received: from void.ncsa.uiuc.edu (void [141.142.103.20]) by ncsa.uiuc.edu (8.8.5/8.8.5) with ESMTP id BAA10602; Mon, 31 Mar 1997 01:36:29 -0600 (CST)
  10. From: Daniel LaLiberte <liberte@ncsa.uiuc.edu>
  11. Received: (from liberte@localhost) by void.ncsa.uiuc.edu (8.8.2/8.8.2) id BAA02687; Mon, 31 Mar 1997 01:36:24 -0600 (CST)
  12. Date: Mon, 31 Mar 1997 01:36:24 -0600 (CST)
  13. Message-Id: <199703310736.BAA02687@void.ncsa.uiuc.edu>
  14. To: "Ron Daniel, Jr." <rdaniel@acl.lanl.gov>
  15. Cc: Dan Connolly <connolly@w3.org>, urn-ietf@bunyip.com
  16. Subject: [URN] Relative URNs considered harmful
  17. In-Reply-To: <3.0.32.19970329143723.0096ca00@acl.lanl.gov>
  18. References: <3.0.32.19970329143723.0096ca00@acl.lanl.gov>
  19. Sender: owner-urn-ietf@Bunyip.Com
  20. Precedence: bulk
  21. Reply-To: Daniel LaLiberte <liberte@ncsa.uiuc.edu>
  22. Errors-To: owner-urn-ietf@Bunyip.Com
  23.  
  24. Ron Daniel, Jr. writes:
  25.  > During the earlier set of discussions my view on relative
  26.  > URNs changed from "unnecessary but probably harmless" to
  27.  > "unnecessary and probably harmful". Let me explain why.
  28.  
  29. My position has been that support for relative URNs is necessary,
  30. but not for the reasons you argue against.  First, I'll argue against
  31. your position and then put forward my own.
  32.  
  33.  > Unnecessary:
  34.  > This is not the key point of controversy, but let me dispose of
  35.  > it quickly.
  36.  > 
  37.  > Relative URLs came about for two reasons. The first was concision,
  38.  > a reasonable consideration since we were all creating HTML my hand
  39.  > using our editors. (Many of us still do, so this point has some
  40.  > weight). The second reason was to make it easier to move connected
  41.  > sets of resources from one site to another. If the links were relative,
  42.  > there was less patching to do.
  43.  > 
  44.  > Since URNs are defined to be location independent, it is not the
  45.  > documents that need to be edited if we want to move a bunch of
  46.  > resources from one location to another. Therefore, the most important
  47.  > reason for relative URLs does not apply to URNs.
  48.  
  49. Given the continued existence of relative URLs, I would agree that
  50. relative URNs are not as necessary regarding the niche filled by
  51. relative URLs.  However, you seem to be assuming that relative URLs
  52. will be phased out to be replaced by URNs once they are available.  I
  53. don't think so for a couple reasons.
  54.  
  55. First, what you called concision will still be significant, depending
  56. on the lengths of URNs.  There is also the matter of other kinds of
  57. convenience.  If one must go through some naming authority to first
  58. assign names for all the parts of a structured document, this would be
  59. more inconvenient than many people will tolerate.  If relative URLs
  60. are easier to create and use than URNs, then people will continue to
  61. use them.
  62.  
  63. Second, relative URLs will not lose their location-independence just
  64. because URNs exist.  Once a document is found via some identifier,
  65. whether a location or a name, the context of that document provides
  66. all the info needed to find the other documents referenced via
  67. relative URLs.  See below for more on how that is done.
  68.  
  69. But that is an argument for why relative URLs will continue to exist.
  70. Part of the argument for why relative URNs will be useful is
  71. similar.  Certainly a relative URN can be just as concise as a
  72. relative URL.  And given a context for interpretation of a relative
  73. URN, there is no problem in their use as another form of "location
  74. independent" identifiers.  But there is another reason why
  75. relative URNs will be useful which has to do with scalability.
  76. See below for that argument.
  77.  
  78.  > Probably Harmful:
  79.  > This will be more contentious, but here goes. This argument depends
  80.  > on an observation:
  81.  > 
  82.  > Observation - a resource may have more than one URN.
  83.  
  84. It is good to remind people that a resource may have more than one
  85. URN.  Some people have the mistaken belief that URNs will solve the
  86. problem of knowing, by simple inspection, whether two different
  87. identifiers are for the same resource.
  88.  
  89.  > We have used the weather map as one example of a resource having, at
  90.  > least temporarily, two URNs.
  91.  
  92. I like that example.
  93.  
  94.  > [...]
  95.  
  96.  > All of these identifiers are reasonable candidates for URN namespaces.
  97.  > If we were to follow Dan's suggestion of using "/" for hierarchy,
  98.  
  99. For clarification, both Dan Connolly and myself have suggested this.
  100.  
  101.  > (and our already-agreed upon use of "urn:") we would have
  102.  
  103. BTW, "urn:" *was* optional up until some unknown time.  Last mention I
  104. heard of this optionality was a couple months ago when Karen Sollins
  105. was arguing for why it causes ambiguity in the resolution process.  My
  106. response to that got too close to the URN-URL debate and I was told to
  107. stop.
  108.  
  109. So when was the official decision made to require "urn:"?
  110.  
  111.  >     urn:isbn:0/679/45446/2
  112.  >     urn:upc:9/780679/454465  
  113.  >     urn:lc:96/34802
  114.  > 
  115.  > The problem with relative URNs is that there is no consistent hierarchy
  116.  > across all identification schemes.
  117.  
  118. There doesn't need to be one hierarchy for all schemes.  In fact, it
  119. is usual for there to be separate hierarchies for each scheme, if
  120. there is a hierarchy at all, and only rarely will there be any overlap,
  121. unless there is some transition in progress.  Clearly relative URNs
  122. cannot be relative to multiple incompatible URN contexts at the same
  123. time.  But this is not a problem for relative URNs because the *one*
  124. context for their interpretation should be known to the author or
  125. provider of the document, and this context should be made known to the
  126. client.
  127.  
  128.  > Assuming Le Carre's work referred
  129.  > to another using the relative identifier "4", what does that mean?
  130.  
  131. It would mean the one thing that is appropriate, and nothing more.
  132. More on that below.
  133.  
  134.  > Is it
  135.  >     urn:isbn:0/679/45446/4    // An illegal ISBN since we have only
  136.  >                               // munged the check character.
  137.  
  138. So the ISBN hierarchy we guessed at doesn't work because of embedded
  139. check chars.  One of two things can be done.  Give up on ISBN as a
  140. hierarchy, or further map the name space to remove the check character
  141. to make it a proper hierarchy.  Or perhaps the check character can
  142. always be appended as part of the last component, not the last
  143. component itself.  e.g. 45446,4 or whatever is appropriate - I don't
  144. grok the ISBN notation.
  145.  
  146. But perhaps ISBN doesnt help as a hierarchy anyway because higher
  147. levels (prefixes of the path) never represent reasonable, useful
  148. collections.  If there is hardly ever any reason to refer to other
  149. members of a collection with a relative URI, then there is no point in
  150. making the name space hierarchical.  More on semantic organization below.
  151.  
  152.  >     urn:upc:9/780679/4        // This might work, except that once again
  153.  >                               // the check character has probably been munged.
  154.  >                               // I haven't read the UPC rules lately, I think
  155.  >                               // the initial "9" is the check character.
  156.  
  157. Then the name space would have to be mapped to something that worked
  158. hierarchically.  But, again, only if it is useful.
  159.  
  160.  >     urn:lc:96/4               // this might work
  161.  
  162. Seems a bit short for a unique ID.  
  163.  
  164.  > Other possibilities are to take the URL that was used to fetch the resource
  165.  > (assuming there was one) and use the relative identifier "4" in conjunction
  166.  > with it.
  167.  
  168. If there was a URL involved in actually fetching the resource, and
  169. if the relative URI rules are followed and it is determined that that
  170. URL is what should be used for the base, then so be it.
  171.  
  172.  > The difficulty of correctly dealing with check characters is only one
  173.  > of the problems with relative URNs. The big point is that there is no
  174.  > uniform hierarchy across all namespaces, and without one it is unsafe
  175.  > to do relative URI processing. We have to know the original identifier the
  176.  > new one is relative to.
  177.  
  178. We have to know the intended identifier or context that any relative
  179. identifier is relative to.  Yes.  This is not a problem.  This is by
  180. design.
  181.  
  182. Even without relative URNs, the same potential problem arises for
  183. relative URLs when the same resource may be accessed by different
  184. URLs, each with incompatible hierarchies.  For example, a symbolic
  185. link to a document may create a second access path to the same document,
  186. and relative URLs within the document may be correct relative to one
  187. path but not the other.  (I can be more explicit in this example if
  188. you want.)  The solution is that in such a situation, the document
  189. should have a BASE specification of some kind to say which path
  190. is correct.
  191.  
  192.  > The last time we took up this topic, Dan LaLiberte presented the very
  193.  > nice set of rules that are used in relative URL processing to answer
  194.  > this question. Lets go through those and see if they apply to URNs.
  195.  
  196. And I clarified the rules regarding chains of indirections.
  197.  
  198.  > From: Daniel LaLiberte 
  199.  > Date: Fri, 31 Jan 1997 16:34:21 -0600 (CST)
  200.  > >... finding the base URI ...
  201.  > >Use the first one that succeeds:
  202.  > >
  203.  > >1. Use the explicit base URI from the document content, if any.
  204.  > >2. Use the explicit base URI from the encapsulating entity, if any.
  205.  > >   (e.g. http response message, another document, etc)
  206.  > >3. Use the URI used to retrieve the entity, if any.
  207.  > >4. Otherwise the base URI is undefined.
  208.  > >
  209.  > >Step 3 should be clarified: If there is no explicit base URI
  210.  > >found by step 1 and 2, we should use the *last* URI used
  211.  > >to retrieve the entity, not the first or some intermediate.  This
  212.  > >applies both for a chain of URL redirections or for a URN that is
  213.  > >resolved into a URL.  Roy Fielding pointed this out to me when I
  214.  > >thought it should be the first URI used, or perhaps the last
  215.  > >permanent redirect.
  216.  > 
  217.  > Step one seems dodgy for our example, we have the equivalent of three
  218.  > BASE tags. (Don't tell me there should be only one, the book was printed
  219.  > with three.)
  220.  
  221. I can only tell you there must be only one.  We do not have the
  222. equivalent of three BASE tags.  If you still think so, then you
  223. haven't understood the rules.  If there are multiple URNs that a
  224. document is accessed by, and the document contains relative URNs, then
  225. the author or creator of the document must have one of those name
  226. spaces in mind when using relative URNs.  Which one it is should be
  227. specified in the BASE tag.
  228.  
  229. This doesn't mean the other URNs will not work.  They will work, and
  230. when a relative URN is encountered, the appropriate context will be
  231. known and used instead of the URN you accessed the document by.
  232. Problem solved.
  233.  
  234.  > Steps 2 and 3 suffer from the same problem. Over long time scales, there is
  235.  > no telling what sort of URI will be used to fetch the thing. Assuming
  236.  > that it will have the same hierarchy as the original seems dangerous.
  237.  
  238. Maybe it is now clear where you misunderstood.  If steps 2 or 3 are
  239. used, then the same answer as above applies.  If relative URNs are
  240. used by an author knowing that they are intended to be persistent,
  241. then the author is essentially promising that the hierarchy implied by
  242. those relative URNs will persist.  Relative URNs correspond to full
  243. URNs and a promise of persistence is a promise either way.  
  244.  
  245. Note that this concern about a possibly changing hierarchy should be
  246. divorced from issues of filesystem organization, as I argued in
  247. earlier messages.  I'll dig that out if you want it repeated.
  248.  
  249. --------------
  250.  
  251. Now for the main reason that I believe relative URNs should be
  252. supported.  First, the reason is not so much for support of relative
  253. URNs themselves.  As much as they are useful, they are not essential
  254. since full URNs and relative URLs can be used too.  The real reason is
  255. that because relative URNs (of the hierarchical kind) require a
  256. publically visible hierarchy, that same hierarchy can be used by
  257. clients to support more scalable resolution.  I'll explain.
  258.  
  259. A principle I stated earlier that you agreed to is that with an ever
  260. increasing number of users, more of the work of resolving identifiers
  261. must be done by clients or servers near the clients.  If, in
  262. attempting to resolve a name, we have no clues about where to start
  263. other than at the top of the URN space, because the naming authority
  264. is not previously known, then we must go to the top to find out about
  265. the naming authority.  Once we know where that naming authority is and
  266. have info on its associated resolvers, we can resolve other URNs that
  267. have the same naming authority starting with the same resolvers.  But
  268. if there is no subdivision of this naming authority's name space that
  269. is visible to clients, then all future resolutions of names in the
  270. name space must go through the very same resolvers.  Those resolvers
  271. will become increasingly busy in proportion to the number of users and
  272. URNs in that space.  Caches of documents will only help for those
  273. individual documents, but every document in the same space is
  274. independent of every other document since there are no collections or
  275. subspaces within the space to start the resolution from.
  276.  
  277. With a hierarchically structured name space, resolution of an
  278. identifier can proceed by first looking up information in local caches
  279. about resolvers or RDSs for the most specific known subspace
  280. corresponding to some prefix of the identifier.  Only then do we need
  281. to ask remote servers to resolve the remainder, or look up resolvers,
  282. or whatever needs to be done.
  283.  
  284. Maybe you didn't intend to argue against hierarchical name spaces
  285. but only against relative URNs.  Well, once you have hierarchical
  286. name spaces, then relative URNs come for free.  The only overhead
  287. is the same as for relative URLs - being clear about the context.
  288.  
  289. There may actually be another way to get a similar kind of scalable,
  290. mostly local resolution without a visible hierarchy (and thus without
  291. support for relative URNs).  Instead of extracting structure from
  292. the identifier, the client must do a sequence of transformations of
  293. the identifier into intermediate states of some kind until ultimately
  294. the resource is found.  If the intermediate states are also
  295. identifiers, then this is equivalent to a sequence of indirections.
  296. These transformations can be done locally based on locally cached code
  297. that directs the transformation (such as regular expressions or Java
  298. appets).  But to be scalable, it must be the case that we can reuse
  299. previously retrieved transformation code, otherwise we will be always
  300. asking remote servers for the appropriate code, and nothing will have
  301. been gained.  This seems possible, if the name space is effectively,
  302. though not visibly, organized, but there is another overriding
  303. concern.
  304.  
  305. In order for any caching to useful in the first place, there must
  306. be some locality of reference to take advantage of.  Locality of
  307. reference means that the next reference to something new is similar to
  308. previous references.  "Similar to" means semantically related or some
  309. how related in a way that is meaningful to the human user.  You don't
  310. typically read publication #97-1489 just because you have read
  311. #97-1488 unless there is some relationship between the two.  If your
  312. next reference is completely independent from previous references,
  313. there is likely to be no information in local caches to help you.
  314.  
  315. So if there is to be some semantic organization of the name space to
  316. promote caching, then hierarchy is one common way things are
  317. organized.  The hierarchy may not be visible in identifiers, and
  318. may only be in an invisible hierarchy of transformations, but I don't
  319. understand the advantage of always and only remaining invisible.
  320. If you are thinking along these lines, please explain.
  321.  
  322. A matrix space is another way to organize things, but I haven't
  323. thought enough about it.
  324.  
  325. So yes, I hope we can come to consensus on the issue of relative URNs.
  326. We should agree that they must be allowed, along with allowing
  327. hierarchial name spaces.  Until there is a strong enough argument
  328. for how non-hierarchical name spaces can support scalable resolution,
  329. I would hesitate to disallow hierarchical name spaces.
  330.  
  331. --
  332. Daniel LaLiberte (liberte@ncsa.uiuc.edu)
  333. National Center for Supercomputing Applications
  334. http://union.ncsa.uiuc.edu/~liberte/